﻿Option Strict Off
Option Explicit On

Imports System.Text
Imports System.IO

Module SDK_AdminPAQ_Funciones
    '--------------------------------------------------------------------------------------
    ' Modulo:             Funciones_Globales
    ' Descripción:        En este módulo se declaran las funciones,procedimientos
    '                     y variables globales usadas por esta aplicación.
    '
    ' Fecha de creación:  01.sept.06
    ' Departamento:       Alianzas ISV's
    ' Autor:              AS
    '
    ' Actualización:      15.sept.06
    ' Contacto:           desarrollo.isv@compac.com.mx
    '--------------------------------------------------------------------------------------


    '____________________________DECLARACIÓN DE CONSTANTES GLOBALES_________________________________
    Public Const kUsa_Cliente As Short = 1
    Public Const kUsa_Proveedor As Short = 2
    Public Const kUsa_Ninguno As Short = 3
    Public Const kUsa_Detalle_Motvos As Short = 1
    Public Const kNo_Usa_Detalle_Movtos As Short = 2
    Public Const kUsa_Importe As Short = 1
    Public Const kNoUsa_Importe As Short = 2


    '_____________________________DECLARACIÓN DE VARIABLES GLOBALES___________________________________
    Public gRuta As New Microsoft.VisualBasic.Compatibility.VB6.FixedLengthString(SDK_AdminPAQ.kLongNombreProducto)

    Public gDocumentoDe As New Microsoft.VisualBasic.Compatibility.VB6.FixedLengthString(23)
    Public gUsaCteoProv As Short
    Public gPrimeraVuelta As Boolean
    Public gUsaMismoCteProv As Boolean

    Public gIdDocto As Integer
    Public gUsaImporte As Boolean
    Public gPrimerMovto As Boolean
    Public gEsTraspaso As Boolean


    '____________________________FUNCIONES Y PROCEDIMIENTOS GLOBALES_______________________________

    'Porcedimiento p_InicializaFormularios
    'Descripción:
    'Parametros
    'Retorna:

    Public Sub p_InicializaFormularios()

        gRuta.Value = ""

    End Sub

    ' Procedimiento f_RellenaConBlancos
    ' Descripción: Procedimiento que recibe una cadena y le concatena espacios
    ' y el caracter nulo al final para dejarla de una longitud determinada.
    ' Parametros: aCadena (String), aTamanio (Integer)
    ' Retorna: aCadena con la lungitud indicada y el caracter nulo como finalizador de cadena
    Public Function f_RellenaConBlancos(ByRef aCadena As String, ByRef aTamanio As Short) As String

        Dim lEspacios As String
        Dim lTamanio As Integer

        lEspacios = Microsoft.VisualBasic.Space(aTamanio)
        lTamanio = aTamanio - Microsoft.VisualBasic.Len(Trim(aCadena)) - 1

        aCadena = Microsoft.VisualBasic.Trim(aCadena) & Microsoft.VisualBasic.Left(lEspacios, lTamanio) & Chr(0)
        f_RellenaConBlancos = aCadena
    End Function
    ' Función f_QuitaCaracterNulo
    ' Descripción: Función que recibe una cadena y le quita los caracteres nulos que contenga
    ' Parametros: aCadena (String)
    ' Retorna: Una cadena sin caractr nulo
    Public Function f_QuitaCaracterNulo(ByRef aCadena As String) As String
        Dim lCadenaTemp As String

        lCadenaTemp = Replace(aCadena, Chr(0), " ")
        f_QuitaCaracterNulo = Trim(lCadenaTemp)

    End Function

    ' Procedimiento para mostrar mensajes
    Public Sub MuestraMensaje(ByRef aMensaje As String, ByRef aEstilo As Short, ByRef aTitulo As String)
        MsgBox(aMensaje, aEstilo, aTitulo)
    End Sub

    ' Procedimiento MensajeError
    ' Descripción: Procedimiento que recibe recibe un código de error y muestra
    '
    Public Sub MensajeError(ByRef aError As Integer)
        Dim aMensaje As New Microsoft.VisualBasic.Compatibility.VB6.FixedLengthString(350)

        aMensaje.Value = New String(Chr(0), 349)
        ' Recupera el mensaje de error del SDK
        SDK_AdminPAQ.fError(aError, aMensaje.Value, 350)
        MsgBox(aMensaje.Value)
    End Sub
    Public Function REGRESA_ERROR(ByVal aError As Integer)
        Dim aMensaje As New Microsoft.VisualBasic.Compatibility.VB6.FixedLengthString(350)

        aMensaje.Value = New String(Chr(0), 349)
        ' Recupera el mensaje de error del SDK
        SDK_AdminPAQ.fError(aError, aMensaje.Value, 350)

        REGRESA_ERROR = aMensaje.Value
    End Function
    ' Procedimiento para Abrir una Empresa
    Public Sub AbrirEmpresa()
        'Dim lError As Integer
        'Dim lRuta As String

        'lRuta = Microsoft.VisualBasic.Compatibility.VB6.GetItemString(frmEmpresas.lstRutas, frmEmpresas.lstEmpresa.SelectedIndex)
        'gRuta.Value = lRuta
        'lError = fAbreEmpresa(lRuta)
        'If lError <> 0 Then
        'MensajeError(lError)
        'End
        'End If


    End Sub

    Public Sub CerrarEmpresa()
        SDK_AdminPAQ.fCierraEmpresa()
        p_InicializaFormularios()
    End Sub



    ' Funciones para obterner propiedades de los documentos modelo (DocumentoDe)

    ' Función que retorna si el DocumentoDe usa Clientes o Proveedores o Ninguno
    ' Parametros que recibe: aCodigo as Integer
    ' Retorna: 1 = Maneja Cliente, 2 = Maneja Proveedor, 3 = Sin Cliente o Proveedor, 0 = aCodigo No existe

    Public Function fDocumentoDeManeja(ByVal aCodigo As Short) As Short

        If ((aCodigo > 0 And aCodigo <= 16) Or aCodigo = 28 Or aCodigo = 29 Or aCodigo = 35 Or aCodigo = 36) Then
            fDocumentoDeManeja = kUsa_Cliente '"Maneja_Clientes"
        ElseIf ((aCodigo > 16 And aCodigo <= 27) Or aCodigo = 30 Or aCodigo = 31) Then
            fDocumentoDeManeja = kUsa_Proveedor ' "Maneja_Proveedor"
        ElseIf (aCodigo = 32 Or aCodigo = 33 Or aCodigo = 34 Or aCodigo = 37) Then
            fDocumentoDeManeja = kUsa_Ninguno ' "Sin_ClienteProveedor"
        Else
            fDocumentoDeManeja = 0 '"Error. aCodigo No existe"
        End If
    End Function

    ' Función que retorna si el DocumentoDe usa Movimientos o no para capturar su importe
    ' Parametros que recibe: aCodigo as Integer
    ' Retorna: kUsa_Importe(1), si maneja importe; kNoUsa_Importe(2); 0 Si ocurrio algun error.

    Public Function fDoctoDeManejaImporte(ByVal aCodigo As Short) As Short

        If ((aCodigo > 0 And aCodigo < 7) Or (aCodigo >= 17 And aCodigo <= 21) Or (aCodigo >= 32 And aCodigo <= 34) Or (aCodigo = 37)) Then
            fDoctoDeManejaImporte = kNoUsa_Importe
        ElseIf ((aCodigo >= 7 And aCodigo <= 16) Or (aCodigo >= 22 And aCodigo <= 31) Or (aCodigo >= 35 And aCodigo <= 36)) Then
            fDoctoDeManejaImporte = kUsa_Importe
        Else
            fDoctoDeManejaImporte = 0 '"Error. aCodigo No existe"
        End If
    End Function

    Public Function fDocumentoDeManejaDetalle(ByVal aCodigo As Short) As Short

        If (aCodigo >= 7 And aCodigo <= 16) Or (aCodigo >= 22 And aCodigo <= 27) Or (aCodigo >= 28 And aCodigo <= 31) Then
            fDocumentoDeManejaDetalle = kNo_Usa_Detalle_Movtos '"No Maneja_Detalle de movimientos"
        Else
            fDocumentoDeManejaDetalle = kUsa_Detalle_Motvos ' "Maneja_Detalle de movimientos"
        End If
    End Function

    'Procedimientos para Inicializar los campos de las formas

    Public Sub LimpiaCamposMovto()
        Dim lDoctoManeja As Short

        lDoctoManeja = fDocumentoDeManeja(CShort(CStr(gDocumentoDe.Value)))
    End Sub

    'Funcion que elimina el documento y/o los movimientos si existen problemas al dar de alta
    Function f_Termina(ByRef pTipo As Short) As Object
        Dim lError As Integer
        Select Case pTipo
            Case 0
                lError = SDK_AdminPAQ.fCancelarModificacionDocumento()
            Case 1
                lError = SDK_AdminPAQ.fBorraDocumento()
            Case 2
                lError = SDK_AdminPAQ.fCancelaCambiosMovimiento()
                lError = SDK_AdminPAQ.fBorraDocumento()
            Case 3
                lError = SDK_AdminPAQ.fCancelaCambiosMovimiento()
        End Select
        Return lError
    End Function
   
End Module
